<?php
/**
 * php.ui.winbiner 패키지 함수 모음 
 * static 메소드에 대한 축약형
 * 
 * @package php.ui.winbinder
 */

/**
 * WinBinder 애플리케이션 시작 
 * 
 * @return void
 */
function wbstart() { 
	WBApplication::start();
}

/**
 * Control 객체 얻어오기 및 설정하기 
 * 
 * @param string|int $id    name 또는 id 
 * @param WBObject $obj
 * @return mixed 
 */
function wbobject($id, $obj = null) {
	if ($obj == null) {  
		return WBApplication::getObject($id);
	} else { 
		return WBApplication::setObject($id, $obj);
	}
}

/**
 * Window 객체 얻어오기 및 설정하기 
 * 
 * @param int $instance
 * @param WBWindow $obj
 * @return mixed 
 */
function wbwindow($instance, $obj = null) {

	if ($obj == null) { 
		return WBApplication::getWindow($instance);
	} else { 
		return WBApplication::setWindow($instance, $obj);
	}
}

/**
 * 생성된 instance 얻어오기 
 * 
 * @param WBObject $obj
 * @return int
 */
function wbinstance($obj) { 
	return WBApplication::getInstance($obj);	
}

/**
 * 객체 생성하기 
 * 
 * 주어진 $options 을 사용하여 객체를 생성한다. 
 * 생성 방법은 각각의 Control, Window 에서 직접 결정된다. 
 * 
 * @param array $options
 * @param int $parent
 * @return WBObject 
 */
function wbcreate($options, $parent = null) { 
	return WBApplication::createObject($options, $parent);
}

/**
 * 레아이웃 생성하기 
 * 
 * @param $options
 * @return unknown_type
 */
function wblayout($options) { 
	return WBApplication::createLayout($options);
}

/**
 * 상위 윈도우 알아오기 
 * 
 * @param $obj 상위 윈도우 객체를 찾을 component
 * @return WBWindow|WBTabControl
 */
function wbparent($obj) { 
	return WBApplication::getParent($obj);
}

/**
 * WinBinder 상수 확인 
 * 
 * @param string|int $constant
 * @return int
 */
function wbconstant($constant, $prefix = 'WBC') { 
	return WBApplication::getConstant($constant, $prefix);
}

/**
 * create extern module(dll) object
 * 
 * @param string $module
 * @return WBLibrary
 */
function wbmodule($module) { 
	return WBApplication::createExternModule($module);
}

/**
 * create color 
 * 
 * @return WBColor
 */
function wbcolor() { 
	$args = func_get_args();
	
	if (is_string($args[0])) { 
		return WBColor::createByString($args[0]);		
	} else { 
		$r = $args[0];
		$g = $args[1];
		$b = $args[2];
		
		return WBColor::create($r, $g, $b);
	}
}

function wbdialog($type = 'info', $message = '', $title = '', $parent = null) { 
	$callback = array('WBDialog', $type);
	
	if ($title == '') $title = $type;
	
	return call_user_func_array($callback, array($parent, $message, $title));
}

function wbclass($class) { 
	return WBApplication::getClassName($class);
}

function wbproject($path) { 
	return WBProjectLoader::loadXml($path);
}

?>